package com.rslai.commons.util.excel;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * 工作表（sheet）
 * Created by rslai on 2016/5/9.
 */
public class Sheet {
    private boolean existHead = false; // excel中是否包含头，默认不包含
    private HashMap<Integer, Head> heads = new HashMap<Integer, Head>(); // excel 头
    private int headRow = 0; // 头所在的行号，从0开始，默认第0行是头
    private int totalRow = 0;  // 总行数
    private HSSFSheet hssfSheet = null; // Excel工作表对象
    private ArrayList<ArrayList<String>> bodys = new ArrayList<ArrayList<String>>(); // excel体数据
    private int totalCol = 0; // 当前表格总字段数

    public Sheet(HSSFSheet hssfSheet) {
        this.hssfSheet = hssfSheet;
    }

    /**
     * 返回此工作表的名称
     * @return 工作表的名称
     */
    public String getSheetName() {
        return hssfSheet.getSheetName();
    }

    /**
     * 工作表（sheet）中是否包含头
     * @return true: 包含，false: 不包含
     */
    public boolean isExistHead() {
        return existHead;
    }

    /**
     * 设置工作表（sheet）中是否包含头，默认不包含
     * @param existHead true: 包含，false: 不包含
     */
    public void setExistHead(boolean existHead) {
        this.existHead = existHead;
    }

    /**
     * 返回表头
     * @return 表头
     */
    public HashMap<Integer, Head> getHeads() {
        return heads;
    }

    /**
     * 设置表头
     * @param heads 表头
     */
    public void setHeads(HashMap<Integer, Head> heads) {
        this.heads = heads;
    }

    /**
     * 返回表头所在行号
     * @return 行号
     */
    public int getHeadRow() {
        return headRow;
    }

    /**
     * 设置表头所在的行号，从0开始，默认第0行是头
     * @param headRow 行号
     */
    public void setHeadRow(int headRow) {
        this.headRow = headRow;
    }

    /**
     * 返回总行数
     * @return 总行数
     */
    public int getTotalRow() {
        return totalRow;
    }

    /**
     * 设置总行数
     * @param totalRow 总行数
     */
    public void setTotalRow(int totalRow) {
        this.totalRow = totalRow;
    }

    /**
     * 返回 Excel 工作表对象
     * @return Excel 工作表对象
     */
    public HSSFSheet getHssfSheet() {
        return hssfSheet;
    }

    /**
     * 设置 Excel 工作表对象
     * @param hssfSheet Excel 工作表对象
     */
    public void setHssfSheet(HSSFSheet hssfSheet) {
        this.hssfSheet = hssfSheet;
    }

    /**
     *  返回 excel 体数据
     * @return excel 体数据
     */
    public ArrayList<ArrayList<String>> getBodys() {
        return bodys;
    }

    /**
     * 设置 excel 体数据
     * @param bodys excel 体数据
     */
    public void setBodys(ArrayList<ArrayList<String>> bodys) {
        this.bodys = bodys;
    }

    /**
     * 返回当前表格总字段数
     * @return 总字段数
     */
    public int getTotalCol() {
        return totalCol;
    }

    /**
     * 设置当前表格总字段数
     * @param totalCol 总字段数
     */
    public void setTotalCol(int totalCol) {
        this.totalCol = totalCol;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Sheet{");
        sb.append("sheetName=").append(getSheetName());
        sb.append(", existHead=").append(existHead);
        sb.append(", heads=").append(heads);
        sb.append(", headRow=").append(headRow);
        sb.append(", totalRow=").append(totalRow);
        sb.append(", bodys=").append(bodys);
        sb.append(", totalCol=").append(totalCol);
        sb.append('}');
        return sb.toString();
    }
}
